package desmontec.documentos

import desmontec.funcionarios.Engenheiro
import desmontec.materiais.QuantidadeMateriais
import desmontec.sistema.SecUser

class DPG {
	
	Integer numero
	
	String beneficiario
	
	Engenheiro responsavel
	
	Date inicioDoPrazoValidade
	
	Date fimDoPrazoValidade
	
	String flagExpirada = "N"
	
	SecUser usuario
	
	// arthur.marques - INICIO
	// mudei o nome e coloquei no mesmo pacote para unificar o fluxo
	
	QuantidadeMaximaDeMateriais materiais
	// arthur.marques - FIM
	
	static constraints = {		
		numero(min:0, blank:false, unique:true )
		beneficiario(size:1..80, blank:false)
		responsavel(nullable: false)
		inicioDoPrazoValidade(nullable:false)
		fimDoPrazoValidade(nullable:false)
		// fernando.alves - INICIO
		// arthur.marques - INICIO
		// a partir da 2 SPRINT uma DPG deve obrigatoriamente ter uma quantidade de materiais
		materiais(nullable:false)
		// arthur.marques - FIM
		// fernando.alves - FIM
		
		//fernando.alves - INICIO
		fimDoPrazoValidade(validator: {val, obj -> if (!val.after(obj.inicioDoPrazoValidade)){
			                                                return['desmontec.documentos.DPG.prazoValidade.erro']}})
		//fernando.alves - FIM
		
		//luiz.machado - INICIO
		flagExpirada(nullable: false, blank: false, inList:["S", "N"])
		//luiz.machado - FIM
	}
	
	// arthur.marques - INICIO
	// adicionando mapeamento
	static hasMany = [ mapasDeEstocagem : MapaEstocagem ]
	 
	static mapping = {
		mapasDeEstocagem cascade:"all,delete-orphan"
	}
	
	// arthur.marques - FIM
	
	String toString(){
		return "${this.numero}: ${this.beneficiario}";
	}
	
	
}
